home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Floppyshop 2
/
Floppyshop - 2.zip
/
Floppyshop - 2.iso
/
art&graf.ix
/
art-3647
/
frac_eng
/
frac_eng.doc
< prev
next >
Wrap
Text File
|
1992-11-01
|
26KB
|
544 lines
The Fractal Engine
Instruction Manual
Atari ST version 1.0
written by Daniel Grace B.Sc. and Mike Harris
(c) 1992
-------------------------------------------------------------------------------
(READ IN MEDIUM OR HIGH RESOLUTION)
Contents:
Section 1: Introduction
1.1 - What is a Fractal ?
1.2 - About the Fractal Engine.
Section 2: Reference Manual
2.1 - Fractal types.
2.2 - Drawing Julia sets and Mandelbrot sets.
2.3 - Palettes.
2.4 - Loading and Saving.
2.5 - Entering Co-ordinates and Animation Sequences.
Section 3: Extra Information.
3.1 - Notes on fractal parameters.
3.2 - Bibliography.
3.3 - Disclaimer, copyright
3.4 - Other programs to follow
------------------------------------------------------------------------------
Section 1: Introduction
Welcome to the Fractal Engine version 1.0 for the Atari ST. This document is
broken in to two main parts. This part explains what's going on in the world
of fractals and about the Fractal Engine. The Second section is a kind of
reference manual and tells you all about how to use the program.
1.1 - What is a Fractal ?
A Fractal is the graphical representation of the behaviour of a non-linear
dynamical system. A fractal has a property known as self-similarity, roughly
this means that a single part of it looks like the whole. Theoretically one
can 'zoom in for ever' on a fractal and never run out of detail. Practically,
however, you are restricted by the accuracy of the computer's real arithmetic
and the time taken by the computer to perform an increasing number of
calculations the futher you 'zoom in'.
1.2 - About the Fractal Engine.
The Fractal Engine can be used to draw Mandelbrot and Julia sets (abr. Mset
and Jset) for eight different families of complex functions. What then are
Msets and Jsets ? The former represents the behaviour of a whole family of
functions and the latter represents the behaviour of an explicit function of
some family. The Mset of a family of functions can be thought of as a 'single
image dictionary' of all the Jsets of that family. All the families of
functions used in Fractal engine are complex functions of Z parameterised by
a complex variable C. Msets are graphs of C (initial Z fixed) and Jsets are
graphs of Z (C fixed). For the purposes of using this program the main thing
to remember is that each point on a Mset image corresponds to a Jset image.
The program allows you to zoom in and out on both Mset and Jset images, giving
you the opportunity to explore the wealth of geometric structures found within
them. You can also create animation sequences to make you fractal images move.
Degas and Neochrome format files are also supported to allow you to use the
images in an art package.
The program uses the novel method called divide-and-conquer for calculating
the image. Also a technique which we call 'the level estimator' is used to
highlight the boundary (often the most interesting part of a fractal image).
This solves the problem (usually ignored by the authors of other fractal
programs) caused by rapidly changing colours which can degrade the image.
You do not need a deep understanding of fractals to use this program. In fact
a general knowledge of the ST is more useful. However we have included
mathematical details and references herein for fractal enthusiasts.
FRAC_ENG.PRG can be in run in or out of the FRAC_ENG folder with the DEFAULTS
folder there too. The PICTURES and COORDNTS folders must also be there if you
wish to load/save pictures or co-ordinate files (see 2.4) from/to the same
disk. To set up a data disk (eg containing just picture or co-ordinate data)
you must create the folders PICTURES, COORDNTS and ANIMATE in the root
directory. You will encounter problems if these folders are in the FRAC_ENG
folder unless it contains a file (eg DISPANIM.PRG) and not just folders.
Be careful when swapping disks, especially if you have an old ST. The
best thing is to have the opposite write protect on newly inserted disks.
The Fractal Engine is written entirely in GFA BASIC v3.0 and compiled using
the v3.6 compiler.
------------------------------------------------------------------------------
Section 2: Reference Manual
The reference manual lists all the available functions of the Fractal Engine.
They are grouped in topics. The Main menu is the main display which is first
shown after loading the program. The title screen will remain displayed after
loading until a mouse button is clicked (It is a 3D rendering of the Z^2+C
Julia set for C=i).
2.1 - Fractal Types.
The following types are available:
1. Quadratic - The equation Z->Z^2+C yields the 'classic' Msets and Jsets.
The Mset of this equation was the first of its kind to be
discovered (by Benoit Mandelbrot). Fondly known by Benoit
himself as 'My baby', many people know it as the
'squashed beetle'.
2. Cubic - A home grown fractal! The equation Z->Z^3-Z+C yields this
variation of the 'squashed beetle'.
3. Degree 4 - This fractal is drawn from equations for modeling magnetism
and remarkably contains the 'squashed beetle'. The Jsets,
called 'Yang-Lee Zeroes', are quite different from anything
else and are definitely worth a look. The equation is:
Z->((Z^2+C-1)/(2*Z+C-2))^2 .
4. Newton - This fractal is drawn by applying Newton's method for
solving P(Z)=(Z-1)(Z+C)(Z-C)=0. This yields the dynamical
system Z->Z-P(Z)/P'(Z) (' meaning the derivative of P(Z)
w.r.t. Z). A point is coloured depending on which of the
three roots Z has converged on (eg Z=1,-C or C). Try and
spot the 'beetles' in this one!
5. Sine - The equation Z->C*SIN(Z) produces very different looking
Mset and Jset images.
6. Cosine - As for sine but the equation is Z->C*COS(Z).
7. Jellyfish - The fractals yielded by Z'->Z, Z->Z^2+C, C->Z' contains
absolutely no beetles at all, even though the equation
is very close to the classic Z^2+C.
8. Barnsley - Based on the iterated function systems (IFS), as described
by Michael Barnsley in his book 'Fractals Everywhere'. Zooms
can produce cell like patterns similar to the cross-section
of a plant. Two equations are used here : Z->(Z-1)/C
If Re Z>=0, otherwise Z->(Z+1)/conjugate(C).
The fractal type can be changed from the Types menu or by loading a picture or
data file of a different type from that currently being used. The Types menu
is selected by clicking on the 'TYPES' button from the main menu screen.
When in the menu, clicking on 'TYPE +' or 'TYPE -' increments or decrements
the current type respectively. Click on 'CHOOSE' to change to the new type
selected or 'EXIT' to return to the main menu with no change. Upon start-up
the initial type is 'QUADRATIC'.
2.2 - Drawing Jsets and Msets.
There are an infinite number of possibilities for drawing different pictures
and this is all, normally, done from the main menu. There are two options
available:
JULIA - Draws a Jset by selecting a C-value from the current Mset image.
This is done by firstly clicking on the 'JULIA' button. You
should then move the mouse pointer around in the top window.
Clicking in this window updates the current C-value for drawing
the Jset image. Clicking in the lower window selects the currently
displayed C-value and prompts you to enter or change the other
drawing parameters (see 3.1).
ZOOM - Zoom in (or out) on the current Mset image or, if it exists, Jset
image. This is done by firstly clicking on the 'ZOOM' button and
then selecting whether you wish to zoom on the Mset or Jset.
Depending on which was selected a square box with diagonals will
appear in the relevant window. This is the 'zoom-box viewfinder'
and can be moved around in it window with the mouse and made to
grow or shrink by clicking the right and left mouse buttons
respectively. When you are happy with the view, press the space
bar and select whether you wish to zoom in or out. Then enter the
parameters, as described in 3.1.
Having entered all the parameters confirm whether or not you wish to draw the
picture and then whether a small or full size screen is desired. Once the
image has been calculated, a value for BOUND is requested, enter a value and
the picture will be completed. You can either try another value or accept the
current and return to the main menu. See 3.1 for more on the parameter BOUND.
SHOW C - Performs the opposite of JULIA in that it takes the current Jset
image and shows the corresponding point on the Mset image. Click
the mouse again to continue.
RESET - Takes images back to initial status as if you selected a new type.
All pictures you have found (stored in memory) are lost, so you
have to confirm this operation.
2.3 - Palettes.
Selecting the 'PALETTES' button or the 'FULL' button from the main menu takes
you to the palette menu. A box at the bottom right of the screen describes
which image the current physical palette is for (eg. FULL, MSET, or JSET), its
palette number and mode number. There are 31 palettes (0 to 30) each of which
can be displayed in one of 12 modes (0 to 11). Palettes numbered 21 to
25 are intended to be used for the DEGREE 4 fractal type while 26 to 30 are
for NEWTON. The remaining palettes are for the other types. The palette and
mode numbers for the current physical palette can be changed by using the top
four buttons of this menu.
The other options on this menu are :
(Click on the centre window(s)) - switches the current palette
between the Mset and Jset or displays the entire FULL image.
The former can also be done from the main menu.
EDIT - This allows you to edit individual colours of the current palette
via another menu. The top six buttons are used to change the red,
green and blue values of the current colour, which can be selec-
ted by clicking on 'COLOUR' and then any pixel. STE owners can
use the right mouse button for fine editing of colours. The EXIT
button takes you back to the Palettes menu.
SAVE - Click on this to save the entire palette data onto disc. You only
need to do this if you have edited a palette and want to use this
palette at a later date. It is saved to the DEFAULTS folder.
SWIRL - Rotates the colours in the current palette to produce a lovely
psychedelic effect. Click the mouse again to continue.
EXIT - Takes you back to the main menu.
2.4 - Loading and Saving.
The two types of file that can be loaded and saved by the program are picture
files and co-ordinate files. The picture files end in either '.SML', '.FUL',
'.NEO', '.PI1' for small screen, full screen, neochrome or degas file formats
respectively. The co-ordinate files end in '.CDF'. An explanation of each
follows :
2.4.1 - Picture files
The loading and saving of these files is done from the main menu by clicking
on the 'LOAD PIC' and 'SAVE PIC' buttons respectively.
Loading
Having selected to load a picture file, an alert box asks you whether you
wish to load a small or full screen picture. A fileselect box then appears
for you to select the file you wish to load, clicking the 'CANCEL' button will
return you to the main menu. Having selected the file, it now loads.
If you have selected a full size screen, you have the option of having a small
copy made so that you can perform further investigations on the picture.
Note : That an existing image can be lost from memory when loading a picture ,
and always if the loaded picture is of a different fractal type from that
currently in use. So save anything you wish to keep before loading.
Saving
Having selected to save a picture file, an alert box asks you which out of
the Mset, Jset or Full screen images to save. If only the Mset image exists
then this is chosen by default.
If you choose to save the Mset or Jset images, a prompt will appear suggesting
the next file number available and giving you the opportunity to edit it. It
is a good idea to accept the current number and make a note of which picture
it was. Editing the file number can be useful for overwriting old files
with new ones. You are then asked to confirm the save operation.
If you choose to save a full size screen, you will be first asked whether you
whish to save the picture in Fractal Engine, Degas, or Neochrome format. Only
the Fractal Engine format has the co-ordinates and parameters saved with the
picture so remember that Degas and Neochrome pictures cannot be loaded back
in. A prompt then appears for file number followed by a confirmation request,
as above.
If Degas or Neochrome was selected, you then have the option to reduce the
number of colours used in the picture in order that extra colours may be used
for other things, such as text, in an art package. The default is sixteen,
but nine or four colours can be also selected. Having chosen this, the picture
is promptly re-coloured, if necessary, and saved. To obtain a print-out of a
full sized picture you will have to use some package supporting Neo or Degas
and with a suitable printer driver.
Before saving files ensure the PICTURES folder are on disk otherwise the
program will crash.
2.4.2 - Co-ordinate Files
The co-ordinate files occupy fifty bytes of storage and contain only the
co-ordinates of a fractal image and not the picture itself. They are loaded
and saved by clicking on the 'LOAD CDF' and 'SAVE CDF' buttons, respectively,
from the Co-ordinates menu. The loading and saving operations act the same as
those for a small screen picture files (2.4.2, above) except the COORDNTS
folder is used instead of PICTURES.
Co-ordinates files are useful as they do not take up much storage space and
are handy for saving the start and end frames for an animation sequence, see
2.5.2, but remember that the pictures have to be re-draw if you wish to view
them.
2.5 - Entering Co-ordinates and Animation Sequences.
As well as drawing Jsets and producing Zooms from the main menu, you are also
able to draw images from parameters entered from the keyboard. This is
useful for slight adjustments to the number of iterations or the area in view.
Another function is to produce an animation sequence of a zoom or changing
julia set image. This is great for impressing people as they can actually
see something moving on the screen.
Both these functions are used by first entering the Co-ordinates menu, click
on the 'CO-ORDS' button from the main menu, and are described below:
2.5.1 - Entering and Drawing Co-ordinates.
Upon entering the co-ordinates menu the current Mset image is displayed the
top window with its parameters below. Clicking on 'MANDEL' or 'JULIA' swaps
between displaying the Mset and Jset images, respectively. If there is no
Jset image then the top window is left blank. The parameters displayed can be
edited by clicking on the 'EDIT' button, see 3.1 for details on these
parameters. Clicking on the 'DRAW' button will draw the selected image with
the parameters shown.
Note that unless an image is draw with modified parameters any editing done
will be lost when exiting back to the main menu. Drawing will mean you'll
loose the current small picture or the full (which ever is selected).
So take care.
2.5.2 - Creating Animation sequences.
There are two kinds of animation sequences possible, a Zoom animation of a
Jset or Mset, and a Jset animation of changing C-values for a given fractal
type at a fixed magnification. These different methods are selected by
clicking on the 'ZOOM ANIM' and 'JUL ANIM' buttons respectively. Both
operations have the same methods as described below :
1. First select Mset or Jset and then the co-ordinates for the start frame.
2. Click on 'ZOOM ANIM' or 'JUL ANIM'. ('JUL ANIM' needs 'JULIA' to be
selected first.)
3. Confirm whether the parameters are correct for start frame.
4. Select end frame. (Do not change fractal type or RESET)
5. Enter the number of frames you wish to have (max 255).
Co-ordinate files will then be written to the disk for each frame required.
They are saved in the ANIMATE folder, so this directory must be on disk.
To draw the images click on the 'CONVERT' button which will read in each
co-ordinate file in turn and draw an image from it. These images are also
stored along with a data file (default ANIMATE_.ADF) in the ANIMATE directory.
It may take some time for all the frames to be draw, heavy mathematics are
involved so this may be an overnight job.
The number of frames contained in an animation sequence varies depending on
the type of sequence, how much change is involved, the amount of free disk
space and the amount of memory the computer has. Too many frames may make
the sequence unnecessarily slow but too few may make it very jumpy. As a
rough guide a magnification sequence of about a thousand times needs about
forty frames to appear smooth. That's approximately thirteen frames for every
magnification of ten. So for a magnification of one million you would need
around eighty frames! Note : it is best to have the final frame of a zoom
animation roughly central in the start frame.
Disk wise: each small size frame takes up 8050 bytes of disk space and each
full size frame 32050 bytes. Single sided drive owners, beware!
Obviously you wont be able to a 50 full size animation ,for example, without a
hard disc.
Memory wise: a 520 STFM/E can have in memory at most 40 small size or 10 full
size frames. For larger memories, each half meg can store around 64 small
size or 16 full size frames. So a 2 meg ST could have an animation sequence
of 236 small or 58 large size frames.
There are three example co-ordinates file pairs suitable for start and end
frames (numbered A0 and A1 respectively) for 40 frame animations you may wish
to try. Below is listed the files for the start frames and comments on
animation type and approximate time taken to compute the 40 frames :
QUAD_JA0.CDF Yields a changing Jset animation (about an hour).
CUBE_JA0.CDF Zoom animation of 'necklace shaped' Jset (overnight job).
QUAD_MA0.CDF Zoom to a 'satelite beetle' (overnight job).
2.5.3 - Displaying Animation Sequences.
The program 'DISPANIM.PRG' can be used to display an animation sequence.
It must be run from the same directory as the main program as it accesses
PALETTES.DAT from the DEFAULTS folder. Next insert the disk containing the
animation sequence and click on the relevant *.ADF file to load and display
the sequence.
Clicking the mouse buttons will allow you to load another sequence or exit
the program, the 'R' key changes the palette and 'S' changes the speed(not
very responsive - so hold it down for a few seconds).
WARNING - The ANIMATE folder is intended as a working folder, meaning : if
you wish to have another animation sequence of the same format* on
the same disk you should copy the sequence to another folder with a
different 7 character name (Sorry you'll have to use a ram disk),
then trash the sequence and ANIMATE._ADF in the ANIMATE folder.
Alternatively if you want another animation sequence of a different
format* then simply change the name of ANIMATE_.ADF using SHOW INFO
from the DESKTOP. Remember to keep the extention "ADF".
*format : Meaning for example a cubic Jset 'ZOOM ANIM' will produce the same
format of files as a cubic 'JULIA ANIM' sequence.
-----------------------------------------------------------------------------
Section 3: Extra Information.
3.1 - Parameters
The images drawn using this program depend sensitively on the type, the
magnification viewed and the parameters listed below.
X0, Y0 : Co-ordinates of the bottom left pixel.
dX : Horizontal distance between pixels. The vertical distance is
dX*(1+1/16+1/64) = dX*1.078125, eg. the images are vertically
stretched by this constant. This may seem pedantic but this
results in the correct yx ratio and explains why shapes appear
a little squashed on the ST. If you want an image centered
about the x-axis set Y0 = -50*dX*1.078125 = -53.90625*dX.
(When using ZOOM the above three parameters are worked out for you)
SPREAD : Setting this parameter to 1 produces many level sets
('Colour bands') in the image. Increasing to 2 or more causes
the colours to be 'spread out', and means the drawing of the
image will take slightly less time.
ITERS : Is the maximum number of calculations to be used for any one
point of the image. If the image lacks detail you will need to
redraw the image with an increased value for ITERS.
PERIOD : By checking for periodic orbits of Z it is possible to 'trap'
points in the set without doing the full ITERS calculations.
PERIOD determines the maximum period to check for. Eg : if you
draw the quadratic jset of C=-1 then periods should be set to 2.
If you are unsure about this parameter set it to 1. PERIOD
should only effect the time taken to compute the image and is
not used by all fractal types.
BOUND : This determines the thickness of the boundary of the set being
drawn. The larger BOUND the thinner the boundary : with BOUND
set to 1 every colour in the image has a boundary, but with
BOUND equal to ITERS or greater no boundary colour appears in
the image.
You will need to experiment with the 'FRACTAL ENGINE' to get used to using
these parameters.
3.2 Bibliography
Below are a list of the main sources of inspiration and reference for this
program:
1. Peitgen/Saupe: The Science of Fractal Images. Springer-Verlag.
2. Peitgen/Richter: The Beauty of Fractals. Springer-Verlag.
3. Barnsley: Fractals Everywhere. Academic Press.
4. Mandelbrot: Fractal Geometry of Nature. W.H.Freeman and Co.
5. SIGGRAPH: IEEE Computer Graphics. (Journal : various papers 1980 ...)
6. Bostock/Chandler: Mathematics, A core course for A level. Publisher???
7. Churchill/Brown: Complex variables and applications. Mc Graw Hill.
8. Mandelbrot sets and Julia sets (2hr VHS video with music). Send SAE
for catalogue : Art Matrix, PO 880MJ Ithaca, NY 14851-0880, USA.
3.3 Disclaimer, copyright, etc.
The authors wish to add that no guarantee is made for the correctness of the
details in this document. Every effort has been made to ensure that the
program operates as described herein. However, due to the need for updates
to the program some functionality may change from that described.
The compiled programs and this document may be used and copied freely by any
person as long as the files remain together and intact. Also none of this
document or programs may be reproduced in part, resold, or hired without the
permission of the authors.
3.4 Other programs to follow
We are currently working on a version 2.0 of this program which will incorpo-
rate 68000 code for drawing routines thus speeding up the program vastly.
There will be other fractal types available and the ability to produce 3D
renderings resulting in images similar the title screen (with shadows). Plus
more goodies as well as some general improvements on v1.0.
We are also working on a program for drawing 3D pictures ('slices') of four
dimensional fractals (existing in a quarternion space). This program will
come with a tutorial/demo on complex and quarternion fractals.
These packages will be available towards the end of January 93 priced ten
pounds each. If anybody has any ideas or information to contribute
concerning fractal programs please do let us know at the address below.
Make cheques payable to Mr M.B.Harris and send to the following address :
Mr. M. B. Harris,
Garden Flat,
20 Bristol Road Lower,
Weston-Super-Mare,
Avon,
BS23 2PW
England.
Please send an SAE, so that we can inform you of futher programs (Probably v3.0
for the FALCON). Also state which model ST you have. A well commented source
code for v1.0 is available for forty pounds.
HAPPY FRACTAL HUNTING.
-------------------------------------------------------------------------------